/*
 * tp boole
 */
package boole.circuit;

import boole.application.vue.VueComposant;
import boole.application.vue.VuePortsSortie;

/**
 * @author Rémi PIOTAIX <remi.piotaix@gmail.com>
 * @author Thomas Nds nds.thomas@gmail.com
 */
public abstract class Generateur extends Composant {

    /**
     * Un générateur n'a pas d'entrées.
     *
     * @return 0
     */
    @Override
    public int getNombreEntrees() {
        return 0;
    }

    @Override
    public void calcul() {
        boolean[] values = this.getArrayValues();
        for (int i = 1; i <= this.getNombreSorties(); i++) {
            this.getSortie(i).setValeur(values[i - 1]);
        }
        super.calcul();
    }

    /**
     *
     * @return un tableau de booléens. Le permier booléen du tableau (à l'indice
     * 0) est la valeur du port numero 1, la 2eme celle du port numero 2, etc.
     */
    protected abstract boolean[] getArrayValues();

    @Override
    public VueComposant getView() {
        return new VuePortsSortie(this);
    }
}
